/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 * juan camilo zarate perdomo
 */
package Analisis;

import vista.Diccionario;
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.StringTokenizer;
import java.util.TreeMap;
import java.util.Vector;
import javax.swing.JOptionPane;

/**
 *
 * @author Juan Zarate
 */
public class CuentaPalabras {

    StringTokenizer palabras;
    String texto;
    int numeroPalabras;
    HashMap<String, Integer> map = null;
    Diccionario d;

    public CuentaPalabras(Diccionario d) {
       this.d = d;
    }

    public void contadorDelTotalPalabras(String st) {

        //texto = textoPorAnalizar.getText();//"a b c a a a c d e b "; 
        palabras = new StringTokenizer(st);
        numeroPalabras = palabras.countTokens();
        JOptionPane.showMessageDialog(null, "El numero de palabras del texto es:" + numeroPalabras);
    }

    public void contadorDeRepeticionesDeLasPalabras() {
        map = new HashMap<String, Integer>();
        while (palabras.hasMoreTokens()) {
            String token = palabras.nextToken();

            Integer c = map.get(token);
            if (c == null) {
                map.put(token, 1);
            } else {
                map.put(token, c + 1);
            }
        }
        for (String s : map.keySet()) {
            JOptionPane.showMessageDialog(null, s + ":" + map.get(s));
        }
        
        
        //Pueba del vector de las primeras 5
        Vector<Palabra> p5 = getMasRepetidas();
        for (Palabra palabra : p5) {
            System.out.println(palabra);
        }   

    }
   
   public Vector<Palabra> getMasRepetidas(){
       
        Vector<Palabra> palabras = new Vector<>();
        int i = 0;
            
        for (String s : map.keySet()) {
            if(i<5){
                palabras.add(new Palabra(s,map.get(s) ));
            }
            i++;
        }
        
       
       return palabras;
   }
   
   public void compararConDiccionario(){
       Vector dicc = d.getPalabras();
       for (String s : map.keySet()) {
            if(estaEnDicc(s, dicc)){
                JOptionPane.showMessageDialog(null, s+ "Está en el diccionario");
            }
       }
   }
   
   public boolean estaEnDicc(String palabra, Vector dicc){
       
       for (int i = 0; i < dicc.size(); i++) {
           System.out.println(""+dicc.get(i));
           if((""+dicc.get(i)).equals(palabra)){
               return true;
           }
       }
       
       return false;
   }
   
   
   public void NumeroTotalDeCaracteresDelTextoSinEspacios(String st) {

        for (int x = 0; x < st.length(); x++) {
            if (st.charAt(x) != ' ') {
                texto += st.charAt(x);
            }
        }
        JOptionPane.showMessageDialog(null, "el numero total de caracteres del texto sin espacios es:" + " " + texto.length());
    }
     public void NumeroTotalDeCaracteresDelTextoConEspacios(String st) {

        JOptionPane.showMessageDialog(null, "el numero total de caracteres del texto es:" + " " + st.length());
    }
}

